In conventional enterprise service provider systems that provide access to multiple services on behalf of clients, a user-facing portal for the system typically includes a hard-coded interface for each service that is associated with a given client. Each client typically defines its own set of attributes or filtering criteria for service requests directed to respective service associated with the client, some or all of which may be different than the attributes or filtering criteria for services requests directed to other services and/or for service requests directed to shared services by other clients. In these conventional systems, in order to on-board a new client and install software implementing an associated service, changes must be made to the program instructions that implement the user-facing portal (e.g., to support client-specific indexing keys in the interface presented to a user) and corresponding changes must be made in the program instructions that implement the service (e.g., to modify operations to use the client-specific indexing keys). Each time the program instructions for the user-facing portal and service are modified to on-board a new client and an associated service, the program instructions must be regression tested prior to installing the code into a production environment.
Conventional content management systems and services are sometimes used to manage the lifecycle operations of documents or other content stored in various repositories on behalf of service subscribers. Each of the repositories typically presents a different interface to users, based on the internal architecture of the underlying repository. For example, different user interfaces require a user to input different information into repository-specific user interface fields in order to retrieve and/or store content stored on their behalf in the repository or perform operations on that content. In these conventional systems, it is the responsibility of the client to create and submit service requests or queries using the information and format that is required by each repository in which content is stored on the client's behalf. In addition to service request and query interfaces being repository-specific, it is often the case that security mechanisms are different between the repositories supported by conventional content management systems. In these systems, it is the responsibility of the client to adhere to different security policies when accessing content stored in different repositories on their behalf.
The technical challenges resulting from the conventional service provider and content management systems described above include the need to modify tightly coupled program instructions for implementing user-facing portals and for implementing associated services or repositories each time a new client, service, or repository is on-boarded in these systems prior to installing the software in the system. This is especially challenging when the modifications involve a change to the attributes or filtering criteria that must be supported in the system due to any new client-specific requirements or changes to existing client-specific requirements. In these conventional systems, the modifications to the program instructions require not only a large engineering effort to make the changes to the code, but also require massive regression testing efforts. In addition, software management tasks, including the replication and maintainability of multiple versions of code, become increasingly complex in these systems as new clients, services, or repositories are brought on-board.
Thus, it is desirable to provide a solution that allows new clients, services, and/or repositories to be installed and that allows changes to be made to the attributes or filtering criteria supported in an enterprise service provider system that provides access to multiple services on behalf of multiple clients without the need to modify existing code for user-facing portals, services, or repositories of the system prior to installation.